package com.office.contract.project.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.office.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.office.common.annotation.Excel;

/**
 * 项目合同对象 contract_info
 * 
 * @author 柒月
 * @date 2025-05-23
 */
public class ContractInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 合同名称 */
    @Excel(name = "合同名称")
    private String contractName;

    /** 甲方名称 */
    @Excel(name = "甲方名称")
    private String partyA;

    /** 甲方联系人 */
    @Excel(name = "甲方联系人")
    private String partyAContact;

    /** 甲方联系电话 */
    @Excel(name = "甲方联系电话")
    private String partyAPhone;

    /** 乙方名称 */
    @Excel(name = "乙方名称")
    private String partyB;

    /** 乙方联系人 */
    @Excel(name = "乙方联系人")
    private String partyBContact;

    /** 乙方联系电话 */
    @Excel(name = "乙方联系电话")
    private String partyBPhone;

    /** 合同金额 */
    @Excel(name = "合同金额")
    private BigDecimal contractAmount;

    /** 签订日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "签订日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signDate;

    /** 生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 终止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "终止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 合同状态:
        0 - 草稿,
        1 - 已签约,
        2 - 执行中,
        3 - 已完成,
        4 - 已终止
        5 - 已归档
        6 - 审核中 */
    @Excel(name = "合同状态: 0 - 草稿, 1 - 已签约, 2 - 执行中, 3 - 已完成, 4 - 已终止 5 - 已归档 6 - 审核中")
    private Long status;

    /** 创建人ID（关联用户表） */
    private Long creatorId;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setContractName(String contractName) 
    {
        this.contractName = contractName;
    }

    public String getContractName() 
    {
        return contractName;
    }

    public void setPartyA(String partyA) 
    {
        this.partyA = partyA;
    }

    public String getPartyA() 
    {
        return partyA;
    }

    public void setPartyAContact(String partyAContact) 
    {
        this.partyAContact = partyAContact;
    }

    public String getPartyAContact() 
    {
        return partyAContact;
    }

    public void setPartyAPhone(String partyAPhone) 
    {
        this.partyAPhone = partyAPhone;
    }

    public String getPartyAPhone() 
    {
        return partyAPhone;
    }

    public void setPartyB(String partyB) 
    {
        this.partyB = partyB;
    }

    public String getPartyB() 
    {
        return partyB;
    }

    public void setPartyBContact(String partyBContact) 
    {
        this.partyBContact = partyBContact;
    }

    public String getPartyBContact() 
    {
        return partyBContact;
    }

    public void setPartyBPhone(String partyBPhone) 
    {
        this.partyBPhone = partyBPhone;
    }

    public String getPartyBPhone() 
    {
        return partyBPhone;
    }

    public void setContractAmount(BigDecimal contractAmount) 
    {
        this.contractAmount = contractAmount;
    }

    public BigDecimal getContractAmount() 
    {
        return contractAmount;
    }

    public void setSignDate(Date signDate) 
    {
        this.signDate = signDate;
    }

    public Date getSignDate() 
    {
        return signDate;
    }

    public void setStartDate(Date startDate) 
    {
        this.startDate = startDate;
    }

    public Date getStartDate() 
    {
        return startDate;
    }

    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setCreatorId(Long creatorId) 
    {
        this.creatorId = creatorId;
    }

    public Long getCreatorId() 
    {
        return creatorId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("contractName", getContractName())
            .append("partyA", getPartyA())
            .append("partyAContact", getPartyAContact())
            .append("partyAPhone", getPartyAPhone())
            .append("partyB", getPartyB())
            .append("partyBContact", getPartyBContact())
            .append("partyBPhone", getPartyBPhone())
            .append("contractAmount", getContractAmount())
            .append("signDate", getSignDate())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("status", getStatus())
            .append("creatorId", getCreatorId())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
